其他
Apache Hudi 从零到一:全面解读写入索引(四)
导读 本文介绍了 Apache Hudi 从零到一:全面解读写入索引(四)。本文翻译自原英文博客 https://blog.datumagic.com/p/apache-hudi-from-zero-to-one-410。
主要内容包括以下几个部分:1. 索引 API
2. 索引类型
3. 回顾
分享嘉宾|许世彦 Onehouse 开源项目负责人
编辑整理|马信宏
出品社区|DataFun
在前一篇文章中,我们介绍了 Hudi 的写操作流程。在所有涉及的步骤中,索引是一个关键步骤,它验证表中记录的存在,并有助于实现高效的更新和删除操作。本篇文章将介绍索引 API 并探索各种类型的索引。请注意,本篇文章涵盖的索引是针对 writer 的,这与 reader 端的索引有所不同。
索引 API
tagLocation():当一组输入记录在写入过程中传递给索引组件时,会调用此 API来标记每条记录,确定它是否存在于表中,并将其与位置信息关联起来。标记后的记录称为“标记记录”。在 HoodieRecord 模型中,currentLocation 字段将通过这个标记过程来填充。 updateLocation():在写入存储之后,某些索引需要更新位置信息以与数据表同步。这一过程仅在 IO 后阶段为适用的索引类型执行。 isGlobal(): Hudi 将索引分类为全局和非全局类型。全局索引在所有表分区中标识唯一记录,因此相对于表是“全局”的。非全局索引则在分区级别验证唯一性。通常,非全局索引由于其扫描空间较小而表现更好,但它们不适用于记录可能在分区之间移动的表。 canIndexLogFiles():由于实现细节的不同,某些索引能够对 Merge-on-Read 表的日志文件进行索引。此特性影响了写入器创建文件写入句柄的方式:当对于配置的索引为真时,插入将通过 AppendHandle 路由到日志文件。 isImplicitWithStorage():这是一个特性,表示索引是否与存储上的数据文件一起隐式“持久化”。某些索引会将其索引数据单独存储。
02
索引类型
1. 简单索引 (Simple Index)
2. 布隆索引 (Bloom Index)
第一阶段涉及将输入键与使用基本文件(Base Files)页脚中存储的最小和最大记录键值构建的区间树进行比较。落在这些范围之外的键表示新的插入记录,而其余的键被视为下一阶段的候选对象。 第二阶段将候选键与反序列化的 Bloom 过滤器进行检查,帮助确定确实不存在的键和可能存在的键。然后使用过滤后的键和关联的基本文件进行实际文件查找,随后返回用于标记的键和位置元组。
3. 桶索引 (Bucket Index)
4. HBase 索引 (HBase Index)
5. 记录级索引 (Record-Level Index)
03
回顾
分享嘉宾
INTRODUCTION
许世彦
Onehouse
开源项目负责人
Onehouse 创始团队成员,开源项目负责人。Apache Hudi PMC 成员。
活动推荐
往期推荐
Apache Spark SQL 原理
Data+LLM:数据治理新范式探索
多模态手机智能体 Mobile-Agent
大模型推荐系统:进展与未来
利用大语言模型促进综合图学习能力
开源框架 ModelScope-Agent 加速多智能体应用构建
数据治理在真实应用场景的落地探索!
大模型与图机器学习协同的用户行为风控
从RAG到Agent,就是大模型的全部了?
加速云端机器学习-Alluxio 在小红书的实践
点个在看你最好看
SPRING HAS ARRIVED